package com.engine4cloud.tdf.supervision.dto.create;

import com.engine4cloud.tdf.supervision.dto.DcpgCrimeNameDTO;
import com.engine4cloud.tdf.supervision.dto.JzdxFileDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * 调查评估信息姓曾-请求对象
 *
 * @author wenjie
 * @date 2024-02-29 10:42:47
 */
@Data
@Schema(description = "调查评估信息新增-请求对象")
public class DcpgInvestigationCreateDTO implements Serializable {

    /**
     * 委托编号
     */
    @Schema(description = "委托编号", example = "110***********11HF")
    @NotBlank(message = "委托编号不能为空")
    private String wtbh;

    /**
     * 拟适用社区矫正人员类型
     */
    @Schema(description = "拟适用社区矫正人员类型", example = "01")
    @NotBlank(message = "拟适用社区矫正人员类型不能为空")
    private String nsysqjzrylx;

    /**
     * 委托单位
     */
    @Schema(description = "委托单位", example = "***人民法院")
    @NotBlank(message = "委托单位不能为空")
    private String wtdw;

    /**
     * 被告人姓名
     */
    @Schema(description = "被告人姓名", example = "张**")
    @NotBlank(message = "被告人姓名不能为空")
    private String bgrxm;

    /**
     * 证件类型
     */
    @Schema(description = "证件类型", example = "01")
    @NotBlank(message = "证件类型不能为空")
    private String bgrzjlx;

    /**
     * 被告人证件号
     */
    @Schema(description = "被告人证件号", example = "110428********2011")
    @NotBlank(message = "被告人证件号不能为空")
    private String bgrzjh;

    /**
     * 被告人性别
     */
    @Schema(description = "被告人性别", example = "1")
    @NotBlank(message = "被告人性别不能为空")
    private String bgrxb;

    /**
     * 被告人出生日期
     */
    @Schema(description = "被告人出生日期", example = "2024-01-01")
    @NotNull(message = "被告人出生日期不能为空")
    private LocalDate bgrcsrq;

    /**
     * 被告人居住地址
     */
    @Schema(description = "被告人居住地址", example = "***县***乡***村***号")
    @NotBlank(message = "被告人居住地址不能为空")
    private String bgrjzddz;

    /**
     * 被告人工作单位
     */
    @Schema(description = "被告人工作单位")
    private String bgrgzdw;

    /**
     * 原判刑期
     */
    @Schema(description = "原判刑期", example = "2年")
    private String ypxq;

    /**
     * 原判刑期开始日期
     */
    @Schema(description = "原判刑期开始日期", example = "2024-01-01")
    private LocalDate ypxqksrq;

    /**
     * 原判刑期结束日期
     */
    @Schema(description = "原判刑期结束日期", example = "2024-01-01")
    private LocalDate ypxqjsrq;

    /**
     * 原判刑罚
     */
    @Schema(description = "原判刑罚", example = "01")
    private String ypxf;

    /**
     * 附加刑
     */
    @Schema(description = "附加刑", example = "01")
    private String fjx;

    /**
     * 判决机关
     */
    @Schema(description = "判决机关", example = "02")
    private String pjjg;

    /**
     * 判决日期
     */
    @Schema(description = "判决日期", example = "2024-01-01")
    private LocalDate pjrq;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String bz;

    /**
     * 罪名不能为空
     */
    @Schema(description = "罪名", example = "[{\"zm\": \"15\",\"zmmc\": \"纵火罪\"}]")
    @NotEmpty(message = "罪名不能为空")
    private List<DcpgCrimeNameDTO> crimeNameList;

    /**
     * 被告人居住地
     */
    @Schema(description = "被告人居住地", example = "[\"460000\",\"46000A\",\"469006\",\"36327\"]")
    @NotEmpty(message = "被告人居住地不能为空")
    private List<String> residenceAreaList;

    /**
     * 委托调查书
     */
    @Schema(description = "委托调查书", example = """
            [{"name": "张三.png","url": "/supervision/oss-file/oss/file?fileName=09468fc20f2544e28891a058858fdf58.jpeg"}]
            """)
    @NotEmpty(message = "委托调查书不能为空")
    private List<JzdxFileDTO> invFileList;

}